/**
 * 弹幕预设配置
 */

import type { BarragePreset } from './index'

export const BARRAGE_PRESETS: Record<string, BarragePreset> = {
  /** 默认配置 */
  default: {
    name: '默认',
    description: '适合大多数场景的默认配置（智能防挡）',
    config: {
      opacity: 0.9,
      speed: 120,    // 弹幕移动速度（px/s），适中的速度便于阅读
      fontSize: 20,
      trackCount: 12,
      trackHeight: 50,
      maxBarrages: 50,  // 限制同时显示数量，平衡性能与体验
      interval: 800,    // 🚀 缩短间隔，加快弹幕流动
      collision: false, // 🚀 关闭碰撞检测，提升性能
      faceDetection: true,  // 🎯 默认开启智能防挡（MediaPipe 人物检测）
      debug: false,  // 关闭调试日志以提升性能
      trackFillMode: 'dense',
      // 🆕 新增高级设置默认值
      density: 'normal' as const,
      scaleWithScreen: false,
      preventSubtitleBlock: false,
      displayRegion: 1
    }
  },

  /** 高密度配置 */
  dense: {
    name: '高密度',
    description: '适合弹幕较多的直播场景',
    config: {
      opacity: 0.8,
      speed: 180,
      fontSize: 18,
      trackCount: 15,
      trackHeight: 40,
      maxBarrages: 80,
      interval: 500,
      collision: true,
      faceDetection: true,
      debug: false,
      trackFillMode: 'maximum'
    }
  },

  /** 低密度配置 */
  sparse: {
    name: '低密度',
    description: '适合弹幕较少的观看场景',
    config: {
      opacity: 1.0,
      speed: 150,
      fontSize: 24,
      trackCount: 8,
      trackHeight: 60,
      maxBarrages: 20,
      interval: 2000,
      collision: false,
      faceDetection: false,
      debug: false,
      trackFillMode: 'sparse'
    }
  },

  /** 电影模式 */
  cinema: {
    name: '电影模式',
    description: '适合电影观看的低干扰配置',
    config: {
      opacity: 0.6,
      speed: 120,
      fontSize: 16,
      trackCount: 3,
      trackHeight: 45,
      maxBarrages: 2,
      interval: 5000,
      collision: true,
      faceDetection: true,
      debug: false
    }
  },

  /** 高性能模式 - 压力测试专用 */
  performance: {
    name: '高性能',
    description: '适合大量弹幕的高性能优化配置',
    config: {
      opacity: 0.85,
      speed: 250,        // 加快速度，快速清空屏幕
      fontSize: 18,      // 稍小字体减少渲染负担
      trackCount: 20,    // 增加轨道数量
      trackHeight: 35,   // 减小轨道高度以容纳更多轨道
      maxBarrages: 100,  // 限制同时显示数量
      interval: 300,     // 减少发送间隔
      collision: false,  // 关闭碰撞检测以提高性能
      faceDetection: true,
      debug: false,
      trackFillMode: 'round-robin'  // 轮询模式更快
    }
  },

  /** 游戏模式 */
  gaming: {
    name: '游戏模式',
    description: '适合游戏直播的高性能配置',
    config: {
      opacity: 0.7,
      speed: 250,
      fontSize: 18,
      trackCount: 6,
      trackHeight: 45,
      maxBarrages: 8,
      interval: 1500,
      collision: true,
      faceDetection: false,
      debug: false
    }
  },

  /** 移动端配置 */
  mobile: {
    name: '移动端',
    description: '适合移动设备的优化配置',
    config: {
      opacity: 0.8,
      speed: 160,
      fontSize: 16,
      trackCount: 5,
      trackHeight: 40,
      maxBarrages: 4,
      interval: 2500,
      collision: true,
      faceDetection: false,
      debug: false
    }
  }
}

/** 获取预设配置 */
export function getPreset(name: keyof typeof BARRAGE_PRESETS) {
  return BARRAGE_PRESETS[name]?.config || BARRAGE_PRESETS.default.config
}

/** 获取所有预设名称 */
export function getPresetNames(): string[] {
  return Object.keys(BARRAGE_PRESETS)
}

/** 获取所有预设 */
export function getAllPresets(): BarragePreset[] {
  return Object.values(BARRAGE_PRESETS)
}
